package lanqiaobei2021;

import java.util.ArrayList;

public class _02货物摆放 {
    /**
     * 小蓝有一个超大的仓库，可以摆放很多货物。
     * 现在，小蓝有 n 箱货物要摆放在仓库，每箱货物都是规则的正方体。小蓝
     * 规定了长、宽、高三个互相垂直的方向，每箱货物的边都必须严格平行于长、
     * 宽、高。
     * 小蓝希望所有的货物最终摆成一个大的立方体。即在长、宽、高的方向上
     * 分别堆 L、W、H 的货物，满足 n = L × W × H。
     * 给定 n，请问有多少种堆放货物的方案满足要求。
     * 例如，当 n = 4 时，有以下 6 种方案：1×1×4、1×2×2、1×4×1、2×1×2、
     * 2 × 2 × 1、4 × 1 × 1。
     * 请问，当 n = 2021041820210418 （注意有 16 位数字）时，总共有多少种
     * 方案？
     */
    public static void main(String[] args) {
        long n = 2021041820210418L;
        ArrayList<Long> list = new ArrayList<>();
        for (long i = 1 ; i <Math.sqrt(n) ; i ++){
            if (n % i == 0){
                list.add(i);
                list.add(n/i);
            }
        }
        int cnt = 0;
        for (int x = 0; x < list.size() ; x ++){
            for (int y = 0; y <list.size(); y++){
                for (int z = 0 ; z < list.size() ; z ++){
                    if (list.get(x) * list.get(y) * list.get(z) == n){
                        cnt ++;
                    }
                }
            }
        }
        System.out.println(cnt);
    }
}
